package com.iris.utils;

public class DataDict {
	public enum DataType{
        //通过括号赋值,而且必须带有一个参构造器和一个属性跟方法，否则编译出错
        //赋值必须都赋值或都不赋值，不能一部分赋值一部分不赋值；如果不赋值则不能写构造器，赋值编译也出错
		ORACLE("ORACLE"),MYSQL("MYSQL");
		//value必须放到后面
		private final String value;
		private DataType(String value){
			this.value = value;
		}
		public String getValue() {
            return value;
        }
	}
	
	public enum JdbcKey {
		URL {
			public String getName(){return "jdbc.url";}
			public String getValue(){return "jdbc.url";}
		},
		DRIVERCLASS {
			public String getName(){return "jdbc.driverClassName";}
			public String getValue(){return "jdbc.driverClassName";}
		},
		USERNAME {
			public String getName(){return "jdbc.username";}
			public String getValue(){return "jdbc.username";}
		},
		PASSWORD {
			public String getName(){return "jdbc.password";}
			public String getValue(){return "jdbc.password";}
		};
		public abstract String getName();
		public abstract String getValue();
		@Override
		public String toString(){
			return this.getName();
		}
	}
	 

	/**
	 * 项目: thinking<br>
	 * 包名: com.iris.utils<br>
	 * 2016年1月15日 victor<br>
	 * @author
	 * 说明: 不是最全,不是最准确,之后补充<br>
	 */
	public enum ColumnTypeMysql {
		NUMBER {
			public String getHibernateValue(){  return  "java.lang.Long";}
			public String getValue(){return "long";}
		},
		DECIMAL {
			public String getHibernateValue(){  return  "java.lang.Long";}
			public String getValue(){return "long";}
		},
		INT {
			public String getHibernateValue(){  return  "java.lang.Long";}
			public String getValue(){return "Long";}
		},
		TINYINT {
			public String getHibernateValue(){  return  "java.lang.Integer";}
			public String getValue(){return "Integer";}
		},
		FLOAT {
			public String getHibernateValue(){  return  "java.lang.Long";}
			public String getValue(){return "Long";}
		},
		DATE {
			public String getHibernateValue(){return "java.sql.Date";}
			public String getValue(){return "Date";}
		},
		DATETIME {
			public String getHibernateValue(){return "java.sql.Timestamp";}
			public String getValue(){return "Timestamp";}
		},
		VARCHAR {
			public String getHibernateValue(){return "java.lang.String";}
			public String getValue(){return "String";}
		}
		;
		public abstract String getHibernateValue();
		public abstract String getValue();
	}
	 

	/**
	 * 2016年1月15日 victor<br>
	 * @param str
	 * @return<br>
	 * 说明: 找出ColumnTypeMysql字段中对应的java类型<br>
	 */
	public static String getMysqlColumnMapping(String str){
		for(ColumnTypeMysql column : ColumnTypeMysql.values()){
            if(column.toString().equals(str)){
            	return column.getValue();
            }
        }
		return "String";
	}
	public static String getMysqlHibernateMapping(String str){
		for(ColumnTypeMysql column : ColumnTypeMysql.values()){
            if(column.toString().equals(str)){
            	return column.getHibernateValue();
            }
        }
		return "java.lang.String";
	}
	 
	public static void main(String[] args) {
		 for(JdbcKey jdbc : JdbcKey.values()){
	            System.out.println(jdbc.getName()+"=="+jdbc.getValue());
        }
		 for(DataType order : DataType.values()){
	            System.out.println(order.getValue()+"=="+order.toString());
        }
		 JdbcKey test= JdbcKey.valueOf("URL");
		 System.out.println(test.getName()+"==="+test.getValue());
	}
}
